6章 条件分岐
6.1 条件分岐のネストによる可読性低下
早期return
6.2 switch文の重複
ストラテジパターン:辞書で分岐(6.6でも利用)
6.3 条件分岐の重複とネスト
ポリシーパターンで条件を部品化
部品になっているので再利用できる
(シグネチャを揃えた関数を渡してもいいかもしれない。強制できないが)
部品にした条件の集合で、条件分岐を表現する
他でも見かける実装:Normalizers (huggingface/tokenizers)
ここで紹介されるポリシーパターンはストラテジーパターンと同じものらしい
https://qiita.com/magicant/items/2846840f749059f00cf3#ストラテジー-ポリシー
ストラテジー(STRATEGY)(別名 ポリシー(POLICY))
6.4 型チェックで分岐しないこと
「interfaceを使う際は」というただし書きがついた主張と理解(型チェックでの分岐は使いうる)
リスコフの置換原則
「基本型を継承型に置き換えても問題なく動作しなければならない」(p.209)
プログラム内での置き換え
ここでいう基本型はinterfaceであり、継承型はinterface実装クラス (p.209)
instanceofで分岐するので、interfaceとinterface実装クラスが置き換えられなくなっている(instanceofの中)
脚注6に置き換えられないからinstanceofを使わざるを得なくなっているともある(ますます悪くなるフィードバックループ)
今の理解:instanceofを使っても「継承型は基本型と同じ振る舞いができなければならない」は満たしていそう。instanceofを使ったところで置き換えられなくなっている(TODO 精査)
6.5 interfaceの使いこなしが中級者への第一歩
言いたいことの1つと思われる
6.6 フラグ引数
第3章 関数(Clean Code)でも
具体的な分割の例
感想:フラグ引数の利用は前提というプラクティスもあるんだよな〜
項目25 キーワード専用引数と位置専用引数で明確さを高める